home *** CD-ROM | disk | FTP | other *** search
/ Collection of Internet / Collection of Internet.iso / faq / news / de_amiga / part1 next >
Internet Message Format  |  1994-03-29  |  53KB

  1. Path: bloom-beacon.mit.edu!hookup!europa.eng.gtefsd.com!howland.reston.ans.net!EU.net!Germany.EU.net!netmbx.de!zrz.TU-Berlin.DE!zib-berlin.de!news.th-darmstadt.de!News.Uni-Marburg.DE!news.belwue.de!iptc!newsserv.zdv.uni-tuebingen.de!zrawi01
  2. From: wiedmann@mailserv.zdv.uni-tuebingen.de (Jochen Wiedmann)
  3. Newsgroups: de.comp.sys.amiga.misc,zer.z-netz.rechner.amiga.allgemein,de.answers,news.answers
  4. Subject: German Amiga-FAQ (Haeufig gestellte Fragen) (Part 1 of 2)
  5. Supersedes: <AmigaFAQg-1-762303609@mailserv.zdv.uni-tuebingen.de>
  6. Followup-To: de.comp.sys.amiga.misc
  7. Date: 29 Mar 1994 19:55:20 GMT
  8. Organization: InternetNews at ZDV, University of Tuebingen, Germany
  9. Lines: 1115
  10. Approved: news-answers-request@MIT.Edu
  11. Distribution: world
  12. Expires: Saturday, 16 Apr 94 21:50:03 (Z)
  13. Message-ID: <AmigaFAQg-1-764970603@mailserv.zdv.uni-tuebingen.de>
  14. Reply-To: wiedmann@mailserv.zdv.uni-tuebingen.de (Jochen Wiedmann)
  15. NNTP-Posting-Host: mailserv.zdv.uni-tuebingen.de
  16. Summary: German language Amiga-FAQ:
  17.          Haeufig gestellte Fragen und Antworten zum Amiga.
  18.          Neue Anwender sollten dies lesen!
  19. Originator: zrawi01@mailserv.zdv.uni-tuebingen.de
  20. Xref: bloom-beacon.mit.edu de.comp.sys.amiga.misc:15632 de.answers:51 news.answers:16995
  21.  
  22. Posted-By: auto-faq 2.4
  23. Archive-name: de-amiga-faq/part1
  24. Last-modified: 29-Mar-1994
  25.  
  26.  
  27.         Haeufig gestellte Fragen (FAQ) zum Amiga [1/2]
  28.           ----------------------------------------------
  29.  
  30. Es folgt eine Liste haeufig gestellter Fragen (FAQ = Frequently asked
  31. questions). Sie ist vor allem fuer neue Anwender gedacht, aber
  32. moeglicherweise finden auch erfahrene Anwender Interessantes. Dies ist
  33. Teil 1, der zweite beginnt mit Kapitel 5.
  34.  
  35. Die Liste ist in Ascii-Format, damit sie von jedermann/frau gelesen werden
  36. kann. Sie ist auch in AmigaGuide- und Dvi-Format erhaeltlich als Teil des
  37. Amiga-FAQ-Archivs. (Datei text/docs/AmigaFAQxxxxxxg.lha auf dem
  38. Aminet, wobei xxxxxx das Datum der neuesten Version ist.)
  39.  
  40. Bitte beachten Sie das Folgende:
  41.  
  42.   - Aenderungen der letzten zwei Wochen sind markiert.
  43.     !    diese Zeile bzw. dieser Abschnitt wurden geaendert
  44.     +    diese Zeile ist neu
  45.     <    vor dieser Zeile wurde etwas geloescht
  46.  
  47.   - Ein Index ist am Ende des zweiten Teils. Wenn auch dies nicht
  48.     weiterhilft: Bitte schicken Sie mir eine E-Mail. Vielleicht kann
  49.     ich eine Antwort in die FAQ aufnehmen.
  50.  
  51.   - Vorschlaege, Beitraege, Kritik und Bierflaschen sind sehr
  52.     willkommen. :-)
  53.  
  54.         Jochen Wiedmann
  55.         Am Eisteich 9
  56.       72555 Metzingen (Germany)
  57.         Tel. 07123 / 14881
  58.  
  59.         Internet: wiedmann@mailserv.zdv.uni-tuebingen.de
  60.  
  61. ==========================(Schnipp-Schnapp)===================================
  62.  
  63.   Amiga-FAQ
  64.   *********
  65.   
  66.      Dieses Dokument enthaelt einige haeufig gestellte Fragen und
  67.   versucht, Antworten zu geben. Seine Absicht ist es, neuen Benutzern zu
  68.   helfen und die Zahl der News-Artikel zu reduzieren, die erfahrene
  69.   Benutzer nicht mehr sehen wollen.
  70.   
  71.      Bitte beachten Sie, dass viele Abschnitte bis jetzt noch fast
  72.   voellig leer sind. Ich verstehe von den betreffenden Abschnitten nichts
  73.   und habe nicht das Gefuehl, als ob ich daran etwas aendern koennte.
  74.   Damit sind Sie an der Reihe: Fuellen Sie die Luecken und teilen Sie mir
  75.   mit, was man hier noch aufnehmen kann!
  76.   
  77.  
  78.   Disclaimer
  79.  
  80.   1 Hardware
  81.     1 Was sind 68EC020, 68EC030 und 68LC040?
  82.     2 Was ist ein mathematischer Coprozessor (FPU) ?
  83.  
  84.   2 Das Betriebssystem
  85.     1 Kann ich eine andere als die eingebaute Kickstart benutzen?
  86.  
  87.   3 Programmierung
  88. !   1 Was ist die beste Dokumentation fuer Programmierer?
  89. !   2 Was ist CATS?
  90. !   3 Wo bekomme ich die Amiga-Include-Dateien?
  91.     4 Wie werde ich Developer?
  92. !   5 Was fuer Compiler (und Assembler) gibt es?
  93.     6 Warum funktioniert keine Esc-Sequenz?
  94.     7 Kann ich AmigaBasic auf dem A1200 verwenden?
  95.     8 Wie lokalisiere ich mein Programm?
  96.     9 Wie erhaelt man einen Zeiger auf das Fenster einer Konsole?
  97.     10 Was sind Pragmas?
  98.     11 Wo finde ich die Funktion xxx?
  99.  
  100.   4 Anwendungen
  101.     1 Text-Editoren
  102.     2 Was fuer Textverarbeitungsprogramme gibt es?
  103.     3 Desktop Publishing
  104.     4 Was ist TeX und wo bekomme ich es?
  105.     5 Gibt es PostScript-Interpreter auf dem Amiga?
  106.  
  107.   5 Grafik
  108.     1 Was heiss Chunky- und Planar-Display?
  109.     2 Was ist Doublebuffering?
  110.     3 Was fuer Monitore arbeiten am Amiga 1200 oder 4000?
  111.  
  112.   6 Emulationen
  113.     1 Kann ich meinen Amiga unter Unix benutzen?
  114.     2 Ist es moeglich, den Amiga als X11-Terminal zu benutzen?
  115.  
  116.   7 Verschiedenes
  117.     1 Gibt es eine Unix-Version von LhA.
  118.     2 Was sind Dateien, die mit ... enden?
  119.     3 Gibt es ein Programm wie Stacker, um die Hard-Disk zu packen?
  120.     4 Wo bekomme ich Fish-Disk xxx?
  121.     5 Wie fuellt man die Tintenkartuschen der HPDeskjet-Drucker nach?
  122.  
  123.   8 Wo und wie bekomme ich Software?
  124.     1 Dateien und Datenbanken zur frei kopierbaren Software
  125.     2 Eine Sammlung von Testberichten
  126.     3 Empfangen von Dateien von einem FTP-Server
  127.     4 Empfangen von Dateien von einem Mail-Server
  128.     5 Die Fish-Disketten
  129.       1 Die Amiga-Library-Disks
  130.       2 Die Fresh-Fish-Serie
  131.     6 Wie kann ich MS-Dos-Disketten lesen und schreiben?
  132.     7 Wie transportiere ich sehr grosse Dateien
  133.  
  134.   Das Amiga-FAQ-Archiv
  135.  
  136.   Beitraege zur Amiga-FAQ
  137.  
  138.   Danksagungen
  139.  
  140.   Index
  141.  
  142.  
  143.  
  144.   Disclaimer
  145.   **********
  146.   
  147.      Diese Datei steht unter dem
  148.   
  149.        Copyright (C)  Jochen Wiedmann
  150.                        Am Eisteich 9
  151.                  72555 Metzingen (Deutschland)
  152.                        Tel. 07123 / 14881
  153.                        Internet: wiedmann@mailserv.zdv.uni-tuebingen.de
  154.   
  155.      Es ist erlaubt, sowohl veraenderte als auch unveraenderte Kopien
  156.   dieser Datei herzustellen und zu verteilen, vorausgesetzt, dass dabei
  157.   die Bestimmungen der "GNU General Public License" eingehalten werden und
  158.   die Copyright-Notiz sowie diese Erlaubnis unveraendert auf allen Kopien
  159.   enthalten sind.
  160.   
  161.      Der Autor gibt *absolut keine* Garantie, dass die hier gegebenen
  162.   Antworten korrekt sind. Einige dieser Antworten sind von anderen
  163.   Benutzern beigetragen worden und ich habe teilweise nicht einmal die
  164.   Moeglichkeit, auch nur die einfachsten Tests durchzufuehren.
  165.   Vorschlaege, weitere Beitraege, neue Fragen und Antworten, Kritik und
  166.   Beschimpfungen (oh, wie ich mein `nil:' liebe :-) sind aber sehr
  167.   willkommen.  Siehe Beitraege.
  168.   
  169.   1 Hardware
  170.   **********
  171.   
  172.      Dieses Kapitel enthaelt Fragen zur Amiga-Hardware.
  173.   
  174.   1.1 Was sind 68EC020, 68EC030 und 68LC040?
  175.   ==========================================
  176.   
  177.      Motorola, die Herstellerfirma der 680x0-Familie bietet auch gestutzte
  178.   Versionen ihrer Prozessoren an. Diese sind etwas preisguenstiger als die
  179.   Originale, weshalb Commodore auch den 68EC020 in den A1200 und den
  180.   68EC030 in den A4000/030 einbaut. Dafuer koennen sie aber auch etwas
  181.   weniger.
  182.   
  183.      Der Unterschied zwischen 68020 und 68EC020 ist, dass letzterer nur
  184.   16MB Speicher adressieren kann. (Das ist der Grund, warum der A1200 nur
  185.   maximal 10MB RAM haben kann.) In den meisten Faellen sollte man den
  186.   Unterschied aber gar nicht bemerken.
  187.   
  188.      Das ist beim 68EC030 anders: Viele Benutzer werden feststellen, dass
  189.   der 68030 eine MMU (Memory management unit) hat und der 68EC030 nicht.
  190.   (Beim 68020 gibt es noch die Moeglichkeit, eine externe MMU, den 68851
  191.   nachzuruesten.) Es gibt einige wichtige Programme, die eine MMU
  192.   brauchen, z.B. Enforcer (ein Hilfsprogramm zur Fehlersuche), GigaMem
  193.   (ein Programm zur Emulation von virtuellem RAM) oder alle aktuellen
  194.   Unix-Versionen. (siehe Unix) Wer eines dieser Programme verwenden will
  195.   und keinen A4000 oder A3000 hat, braucht deshalb eine Prozessorkarte
  196.   mit einem 68030 oder 68040.
  197.   
  198.      Der 68LC040 ist ein 68040 ohne FPU. Siehe FPU.
  199.   
  200.   1.2 Was ist ein mathematischer Coprozessor (FPU) ?
  201.   ==================================================
  202.   
  203.      Die Prozessoren 68000 bis 68030 bieten ausschliesslich Integer (=
  204.   Ganzzahl) Arithmetik. Floating-Point (Fliesskomma) Operationen werden
  205.   ueber eine Befehlssequenz ausgefuehrt. Floating-Point Units (FPUs) bzw.
  206.   mathematische Koprozessoren sind fuer diese Aufgaben optimiert.
  207.   
  208.      Im wesentlichen kann man drei FPU-Typen unterscheiden: Den 68881,
  209.   68882 und die interne FPU des 68040. Aufgrund der Trennung von
  210.   Arithmetikeinheit und Konvertierlogik (notwenig zur Konversion
  211.   anliegender Zahlenformate in das prozessoreigene 80bit-Format) ist die
  212.   68882 FPU bis zu 1.5 mal schneller als die 68881. Die interne FPU des
  213.   68040 besitzt darueber hinaus eine dreistufige Pipeline, allerdings
  214.   sind in ihr nicht alle Befehle der 68881/68882 realisiert. Die
  215.   fehlenden (trigonometrischen) Befehle werden per Software emuliert
  216.   (z.B. ueber die 68040.library).
  217.   
  218.      Fuer viele Programme (Raytracing, DTP, Mathematik, TeX) existieren
  219.   spezielle Coprozessorversionen. Je nach Auslastungsgrad kann damit eine
  220.   Geschwindigkeitssteigerung bis zum Faktor 50 erreicht werden.
  221.   
  222.      Michael Kaiser (kaiser@ira.uka.de)
  223.   
  224.   2 Das Betriebssystem
  225.   ********************
  226.   
  227.      Dieses Kapitel behandelt Fragen zum Betriebssystem, sowohl Kickstart
  228.   als auch Workbench.
  229.   
  230.   2.1 Kann ich eine andere als die eingebaute Kickstart benutzen?
  231.   ===============================================================
  232.   
  233.      Zunaechst ein paar Worte zur Legalitaet der Benutzung einer anderen
  234.   Kickstart: Es ist *nicht* erlaubt, Kopien von Kickstarts fremder
  235.   Computer zu erstellen und auf einem anderen Computer zu benutzen! (Es
  236.   ist sogar fraglich, ob man das auf eigenen Maschinen darf, wenn man
  237.   mehr als einen Amiga hat.)
  238.   
  239.      Natuerlich ist es moeglich und fuer gewisse Personen (z.B. Developer,
  240.   siehe Developer) auch erlaubt.  Es gibt zwei verschiedene
  241.   Moeglichkeiten, eine Hardware- und eine Softwareloesung. Erstere ist,
  242.   eine Platine in den Computer einzubauen, die sowohl die eigene als auch
  243.   eine andere Kickstart aufnehmen kann, zwischen denen man dann
  244.   umschalten kann.
  245.   
  246.      Die Softwareloesung benoetigt ein Programm (einen sogenannten
  247.   Softkicker) und die Kopie der anderen Kickstart. Der Softkicker
  248.   alloziert RAM, laedt die Kickstart-Kopie in dieses RAM und fuehrt einen
  249.   Reset aus. Natuerlich fehlt dann nach dem Reboot unter der neuen
  250.   Kickstart etwas RAM: 256KB weniger fuer Kickstart 1.2 oder 1.3 und
  251.   512KB fuer die neueren Kickstarts.
  252.   
  253.      Es gibt verschiedene Softkicker, von denen einige eine MMU benoetigen
  254.   (siehe 68EC0xx). Eine nahezu perfekte Loesung fuer die Kickstart 1.3
  255.   bietet das Programm kick13 (Aminet, Directory `util/misc'), weil hier
  256.   bereits die Kickstart integriert ist. (Mit Erlaubnis von Commodore!)
  257.   Fuer neuere Kickstarts wuerde ich SKick 3.43 (Aminet, Directory
  258.   `os20/util') empfehlen, das keine MMU braucht und viele verschiedene
  259.   Kickstarts unterstuetzt. Die Kopie des ROM zu erzeugen ist mit einem
  260.   Programm wie dem Folgendem moeglich:
  261.   
  262.            #include <stdio.h>
  263.        
  264.            #define kickorig 0xf80000   /*  0xfc0000 fuer Kick 1.2 und 1.3   */
  265.            #define kicklen  0x080000   /*  0x040000 fuer Kick 1.2 und 1.3   */
  266.        
  267.            void main(int argc, char*argv[])
  268.              { FILE *fh;
  269.        
  270.                if ((fh = fopen("kickstart.file", "w"))  !=  NULL)
  271.                  { result = fwrite(kickorig, kicklen, 1, fh);
  272.                  }
  273.                fclose(fh);
  274.              }
  275.   
  276.   3 Programmierung
  277.   ****************
  278.   
  279.      In diesem Kapitel finden vermutlich nur Programmierer Interessantes.
  280.   
  281. ! 3.1 Was ist die beste Dokumentation fuer Programmierer?
  282. ! =======================================================
  283.   
  284.      Die beste verfuegbare Dokumentation sind sicherlich die RKM's (ROM
  285.   Kernel Manuals, die schwarzen) von Commodore. Sie werden von
  286.   Addison-Wesley veroeffentlicht.
  287.        The Amiga ROM Kernel Manual:  Libraries, ISBN 0-201-56774-1
  288.        The Amiga ROM Kernel Manual:  Devices, ISBN 0-201-56775-X
  289.        The Amiga ROM Kernel Manual:  Includes and Autodocs, ISBN
  290.                                                             0-201-56773-3
  291.        The Amiga Hardware Manual, ISBN 0-201-56776-8
  292.        The Amiga User Interface Style Guide, ISBN 0-201-57757-7
  293.   
  294.   Vor allem die Libraries sind ein Muss. Weniger nuetzlich sind die
  295.   Includes und Autodocs: Sie sind auf Diskette als Online-Hilfe sicher
  296.   nuetzlicher.  Siehe Include-Dateien.
  297.   
  298.      AmigaDOS wird in diesen Buechern kaum behandelt. Die Autodocs geben
  299.   einige Informationen, aber um tiefer einzusteigen braucht man das
  300.        The AmigaDOS Manual, 3rd Edition, ISBN 0-553-35403-5
  301.   
  302.   ebenfalls von Commodore, das von Bantam Books herausgegeben wird.
  303.   
  304.      Eine gute Wahl ist auch
  305.        The Amiga Guru Book
  306.   
  307.   von Ralph Babel. Das Buch beginnt mit einem ca. 250-seitigen
  308.   allgemeinen Ueberblick ueber verschiedenste Aspekte der Programmierung
  309.   des Amiga. Fuer Anfaenger duerften vor allem die Abschnitte ueber die
  310.   Amiga-Datentypen sowie die Amiga-Includes und die amiga.lib interessant
  311.   sein, aber auch Erfahrene finden hier mit Sicherheit noch Neues, was
  312.   zum Teil nicht einmal in den RKM's enthalten ist. Den groessten Teil
  313.   des Buches nehmen aber 500 Seiten nur zu AmigaDOS ein. Dieser Teil ist
  314.   meines Erachtens der wichtigste, weil das AmigaDOS-Manual der
  315.   schlechteste Teil der offiziellen Dokumentation ist. Das Buch ist sehr
  316.   dicht geschrieben und deshalb weniger leicht lesbar als die RKM's, aber
  317.   ich empfehle es als Zusatz und vor allem anstelle des AmigaDOS-Manuals.
  318.   (Allerdings ist das Guru-Buch kein Ersatz fuer die Libraries & Devices,
  319.   die hier nicht behandelt werden.) Ungluecklicherweise hat das Buch
  320.   keine ISBN-Nummer und ist deshalb nur bei den folgenden Adressen
  321.   erhaeltlich:
  322.   
  323. !      Hirsch & Wolf OHG; Mittelstrasse 33; D-56564 Neuwied; Germany
  324. !      Voice: +49 (2631) 8399-0; Fax: +49 (2631) 8399-31
  325. !      E-Mail: <hhhirsch@carla.adsp.sub.org> (fax preferred)
  326. !      (Eurocard/Mastercard/VISA)
  327. !      
  328. !      Periscope; Attn: Cody Lee; 1717 W Kirby Ave; Champaign, IL 61821, USA
  329. !      Voice: +1 (217) 398 4237; Fax: +1 (217) 398 4238
  330. !      E-Mail: <periscope@cei.com>
  331. !      
  332. !      Someware; 27 rue Gabriel Peri; 59186 Anor; France
  333. !      Voice: +33 27596000; Fax: +33 27595206
  334. !      E-Mail: <didierj@swad.adsp.sub.org>
  335. ! 3.2 Was ist CATS?
  336. ! =================
  337.   
  338.      Dies ist eine Abteilung von Commodore West Chester, die frueher
  339.   `Commodore Amiga Technical Support' hiess und spaeter in `Commodore
  340.   Application and Technical Support' umbenannt wurde. Die Mitglieder
  341.   arbeiten unabhaengig von der Entwicklungsabteilung, aber eng mit ihr
  342.   zusammen, und versuchen, Entwicklern ausserhalb von Commodore beim
  343.   Erstellen guter Amiga-Anwendungen zu helfen, sei das eine Hard- oder
  344.   Software. Dazu hat CATS eine Menge an Informationen und Tools
  345.   gesammelt, auf Floppy, CD oder Papier. Ein grosser Teil dieses
  346.   Materials ist auch der Allgemeinheit, d. h. fuer Nicht-Developer
  347.   zugaenglich. Aber bitte CATS nicht mit einer Hotline verwechseln!
  348.   
  349.      Amerikaner koennen das Material von
  350.            CATS - Developer Applications
  351.            Commodore
  352.            1200 Wilson Drive
  353.            West Chester, PA. 19380
  354.   
  355.   bekommen, der Distributor fuer ganz Europa ist die
  356.            Fa. Hirsch & Wolf
  357.            Mittelstr. 33
  358.            56564 Neuwied
  359.            Tel. 02631/83990
  360.   
  361.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.com
  362.   
  363. ! 3.3 Wo bekomme ich die Amiga-Include-Dateien?
  364. ! =============================================
  365.   
  366.      Der einzige legale Weg, die Include-Dateien und die AutoDocs zu
  367.   bekommen (und Sie sollten sie bekommen, sie sind *sehr* nuetzlich!),
  368.   ist, Developer zu werden (siehe siehe Developer) oder das sogenannte
  369.   `NDU' (Native developers update kit, auch als `NDUK', `NDK' bekannt oder
  370.   `ADU' fuer Amiga Developer Update) bei CATS zu kaufen. Siehe CATS. Es
  371.   kostet etwa 50DM, was sicher ein fairer Preis ist. Dabei handelt es
  372.   sich um ein 5-Disketten-Set, das neben den aktuellen Includes und
  373.   AutoDocs auch Tools fuer Programmierer, z.B. Enforcer, Mungwall, Sushi
  374.   und die debug.libg (zum Debuggen) sowie anderes, z.B. CatComp (siehe
  375.   Lokalisierung) oder Report (fuer Bug-Reports oder Vorschlaege an
  376.   Commodore) enthaelt. Die aktuelle Version ist 3.1 und fuer
  377.   Programmierer beinahe obligatorisch.
  378.   
  379.      Wem die Includes genuegen, der kann diese ueber ein Update seines
  380. ! Compilers (nur kommerzielle Compiler) oder von den Fish-CD's bekommen.
  381. ! Siehe Fish-CD.
  382.   
  383.   3.4 Wie werde ich Developer?
  384.   ============================
  385.   
  386.      Um Developer zu werden, braucht man die `ADSP'-Antragsformulare
  387.   (Amiga developer support program). Um diese zu bekommen, sollte man
  388.   einen Brief an die lokale Commodore-Niederlassung schreiben und nach
  389.   diesen Papieren fragen, in denen das weitere erklaert wird. In
  390.   Deutschland ist die Adresse folgende:
  391.            Commodore
  392.            Lyoner Strasse 38
  393.            60528 Frankfurt
  394.      Es gibt drei verschiedene Arten von Developern:
  395.   *Registered*
  396.        Hier bekommt man vor allem Zugang zum adsp-Kommunikationsnetz
  397.        (eine Art Commodore-internes Usenet), ueber das man direkt mit
  398.        anderen Entwicklern auch von Commodore selber ueber seine Probleme
  399.        diskutieren kann. Die Jahresgebuehr betraegt 150 DM, die einmalige
  400.        Aufnahmegebuehr 50 DM.
  401.   
  402.   *Certified*
  403.        Dies ist die interessanteste Klasse: Man bekommt von der meisten
  404.        Systemsoftware die aktuellen Beta-Versionen (z. B. Kickstart und
  405.        Workbench) sowie die dazugehoerigen Includes und AutoDocs.
  406.        Certifieds bekommen aber nicht jede Beta und in der Regel auch
  407.        keine Hardware-Beta. Man bezahlt 400 DM pro Jahr dafuer und eine
  408.        einmalige Aufnahmegebuehr von 100 DM.
  409.   
  410.   *Commercial*
  411.        Kommerzielle Entwickler bekommen im wesentlichen dieselben
  412.        Informationen wie die "Zertifizierten", allerdings kompletter,
  413.        sprich auch Beta-Hardware, und etwas frueher. Dies hat auch seinen
  414.        Preis: 700DM pro Jahr plus einmalige Aufnahmegebuehr von 100DM.
  415.   
  416.   Die Preise und die angebotenen Moeglichkeiten koennen von Land zu Land
  417.   verschieden sein, auch gibt es meines Wissens nicht in allen Laendern
  418.   den "Registered". Ein guter Tip ist es, eine Gruppe zu bilden und damit
  419.   die Kosten zu reduzieren.
  420.   
  421.      Alle Entwickler muessen das sogenannte `NDA' (Non disclosure
  422.   agreement) unterzeichnen. Dies besagt, dass sie die erhaltenen
  423.   Informationen bei Strafe nicht an Unbefugte weitergeben duerfen.
  424.   
  425. ! 3.5 Was fuer Compiler (und Assembler) gibt es?
  426. ! ==============================================
  427.   
  428.      Es gibt viele Programmiersprachen auf dem Amiga, kommerzielle
  429.   Compiler ebenso wie frei kopierbare. Ich moechte nur diejenigen
  430.   aufzaehlen, die mir bekannt sind oder die ich aus einem anderem Grund
  431.   fuer erwaehnenswert halte.
  432.   
  433.   *Assembler*
  434.        Alle C-Compiler beinhalten einen Assembler. Frei kopierbar und
  435.        zuverlaessig sind A68K und PhxAss. (Aminet, Directory `dev/asm'
  436.        oder Fish-Disks 521 bzw. 906)
  437.   
  438.   *C*
  439.   *C++*
  440.        Frei kopierbare C-Compiler sind der `gcc' (der sein eigenes
  441.        Directory `dev/gcc' auf dem Aminet hat) und die Probeversion (mit
  442.        der man aber schon eine ganze Menge anfangen kann) von `Dice' (per
  443.        FTP von `ftp.uni-paderborn.de', Directory
  444.        `/news/comp.binaries.amiga/volume91/languages' oder auf Fish disk
  445. !      491).  Der grosse Vorteil von `gcc' ist, dass man ihn auf der
  446. !      ganzen Welt und auf nahezu jedem Computer findet. Ein weiterer
  447. !      Vorteil ist, dass er sogar einen C++-Compiler enthaelt! Aber er
  448. !      ist langsam und benoetigt 4MB RAM oder mehr.
  449. !      Kommerzielle C-Compiler sind `Aztec-C', `Dice' und `SAS-C'.  Ich
  450. !      kann `Aztec-C' leider nicht mehr empfehlen, denn der Compiler
  451. !      scheint nicht mehr weiterentwickelt zu werden. Was die
  452. !      kommerziellen Compiler auszeichnet, sind ihre hervorragenden
  453. !      Source-Level-Debugger, die den anderen fehlen. SAS-C enthaelt
  454. !      sogar einen Crosscompiler, der C++ in C uebersetzt und ebenfalls
  455. !      den Source-Level-Debugger unterstuetzt.  Dice ist der
  456. !      preisguenstigste und schnellste Compiler, aber auch SAS-C ist
  457. !      recht preiswert fuer Studenten oder als Update (sogar als Update
  458. !      von anderen Compilern.)
  459.   
  460.        Comeau C++ ist ebenfalls ein Crosscompiler, was an und fuer sich
  461.        kein Problem waere. Aber Comeau C++ hat keinen integrierten
  462.        C-Compiler, man braucht also zusaetzlich SAS-C, Aztec-C oder Dice.
  463.        Aber er unterstuetzt die neuesten Standards und laeuft wie `gcc'
  464.        auf vielen verschiedenen Systemen. In Deutschland wird auch Maxxon
  465.        C++ angeboten, ueber das ich nichts sagen kann. Beide Compiler
  466.        sind kommerziell. Comeaus Adresse ist:
  467.                 Comeau computing
  468.                 91-34, 120th Street
  469.                 Richmond Hill, NY, 11418-3214
  470.                 USA
  471.             
  472.                 EMail: Greg Comeau, comeau@bix.com
  473.   
  474.   *Forth*
  475.        JForth soll eine exzellente Forth-Version sein. Unter anderem
  476.        enthaelt es objektorientierte Erweiterungen, ein volles
  477.        Amiga-Interface und einen Anwendungsgenerator. Es ist erhaeltlich
  478.        von:
  479.                 Delta Research
  480.                 P.O. Box 151051
  481.                 San Rafael, CA   94915-1051
  482.             
  483.                 Phone: (415) 453-4320
  484.                 EMail: Phil Burk, phil@ntg.com
  485.                        Mike Haas, haas@starnine.com
  486.   
  487.   *Fortran*
  488.        (Seufz! Es gibt immer noch Leute, die es brauchen :-<) Frei
  489.        kopierbar sind BCF (Fish disk 470) und f2c, der Fortran in
  490.        C-Quelltext umwandelt.  (Aminet, Directory `/dev/misc'). Ein
  491.        kommerzieller Compiler ist von ABSoft erhaeltlich. Allerdings sind
  492.        dies alles nur Fortran-77-Compiler, es gibt keine
  493.        Fortran-90-Compiler auf dem Amiga.
  494.   
  495.   *Lisp*
  496.        Frei kopierbare Lisp-Interpreter sind XLisp (Fish-Disk 181) und
  497.        OakLisp (Fish-Disks 519 und 520) und CLISP
  498.        (`/pub/lisp/clisp/binaries/amiga' at
  499.        `ma2s2.mathematik.uni-karlsruhe.de'). Auch Compiler gibt es: Gambit
  500.        (Fish-Disks 764 und 765) sowie Scheme-to-C (Fish-Disks 556-558).
  501.        Von Interesse ist vielleicht eine Mail-Liste: Senden Sie dazu eine
  502.        Mail mit dem Wort `Subscribe' an `amigalisp@contessa.phone.net'.
  503.   
  504.   *Prolog*
  505.        `/dev/lang/UNSWProlog.lha' und `dev/lang/sbp3_1e' auf dem Aminet
  506.        sowie `SBProlog' auf der Fish-Disk 141 und `SBProlog' auf der
  507.        Fish-Disk 145 sind frei kopierbare Prolog-Interpreter.
  508.   
  509.   *Modula-2*
  510.        M2Amiga wird in Europa und Benchmark Modula-2 in den USA
  511.        angeboten. Beide sollen sehr gut sein und sowohl ueber gute
  512.        Source-Level-Debugger als auch eine umfangreiche Bibliothek
  513.        verfuegen. Besonders M2Amiga wird sehr gut unterstuetzt durch eine
  514.        deutsche Benutzergruppe (AMOK), die z.B. eine eigene PD-Serie
  515.        anbieten.
  516.   
  517.        M2Amiga ist bekommt man bei
  518.                 A+L AG
  519.                 Daderiz 61
  520.                 2540 Grenchen
  521.                 Schweiz
  522.             
  523.                 Tel.: +41/65/52 03-11
  524.                 Fax:              -79
  525.   
  526.        und Benchmark Modula-2 ist erhaeltlich von:
  527.                 Armadillo Computing
  528.                 5225 Marymount Drive
  529.                 Austin, Texas 78723
  530.                 USA
  531.             
  532.                 Phone/FAX: 512/926-0360.
  533.                 EMail: Jim Olinger, jolinger@bix.com
  534.   
  535.   *Oberon*
  536.   *Oberon-2*
  537.        A+L vertreibt auch AmigaOberon, der sowohl Oberon als auch Oberon-2
  538.        beherrscht. Der Compiler kommt mit einer integrierten
  539.        Entwicklungsumgebung (incl. freikonfigurierbarem Editor) und
  540.        umfangreicher Modulbibliothek. Library Linker zum einfachen
  541.        Erzeugen von AmigaOS shared libraries sowie run-time
  542.        Source-Level-Debugger sind ebenfalls erhaeltlich.
  543.   
  544.        Auch fuer diesen Compiler gibt es Unmengen von Modulen und
  545.        Bsp.-Sourcen auf AMOK-Disks.
  546.   
  547.   *Pascal*
  548.        Es gibt einen PD-Compiler namens PCQ (Aminet, Directory `dev/lang'
  549.        oder Fish-Disk 511), der allerdings kein voller Pascal-Compiler
  550.        ist und dem sehr wesentliche Dinge fehlen. P2C konvertiert Pascal
  551.        in C und ist auf der Fish-Disk 341 zu finden. (Aminet:
  552.        `/dev/misc/p2c120.lha') Ferner gibt es zwei kommerzielle Compiler
  553.        namens HiSoft-Pascal (von der gleichnamigen Firma) und KickPascal
  554.        von Maxxon. HiSoft und P2c behaupten, kompatibel zu Turbo-Pascal
  555.        5.0 zu sein. HiSoft hat ausserdem einen guten
  556.        Source-Level-Debugger.
  557.   
  558.   3.6 Warum funktioniert keine Esc-Sequenz?
  559.   =========================================
  560.   
  561.      Viele Drucker kommen mit einem Handbuch, das erklaert, welche
  562.   Esc-Sequenzen welche Funktion ausloesen. Aber wenn man diese Sequenzen
  563.   dann einmal ausprobiert, passieren oft merkwuerdige Sachen, naemlich
  564.   entweder gar nichts oder etwas ganz anderes, als geplant war. Und das
  565.   hat auch einen Grund, naemlich die Amiga-Druckertreiber. Diese Treiber
  566.   sind so gebaut, dass sie nur einen bestimmten Satz `ANSI-Esc-Sequenzen'
  567.   verstehen, nicht die (verschiedenen) druckereigenen, von den
  568.   verschiedenen Druckerherstellern definierten. Der Sinn dabei ist, dass
  569.   jede Anwendung auf dem Amiga nur diesen einen Standardsatz an Sequenzen
  570.   verwendet und so nicht zu wissen braucht, welcher Drucker tatsaechlich
  571.   angeschlossen ist. Der Druckertreiber uebersetzt dann diese
  572.   Standardsequenzen in die druckereigenen. Eine Liste der verfuegbaren
  573.   ANSI-Esc-Sequenzen findet sich im aktuellen Workbench-Handbuch (oder in
  574.   aelteren AmigaDOS-Handbuechern). Wenn Du nun eine Steuersequenz an den
  575.   Drucker schicken willst, die es nicht als ANSI-Sequenz gibt, hast Du
  576.   zwei Moeglichkeiten, dies doch zu erreichen:
  577.     1. Umgeh den Druckertreiber (der erfolglos versuchen wuerde, die
  578.        Sequenz zu interpretieren oder zu uebersetzen) und sende die
  579.        Ausgabe *nur* fuer die Laenge dieser Sequenz an `PAR:' (bzw.
  580.        `SER:'). Dabei muss man die Druckerausgabekanaele umstaendlich oft
  581.        umschalten, und man muss wissen, wo der Drucker angeschlossen ist
  582.        (`PAR:' oder `SER:').
  583.   
  584.     2. Benutze eine spezielle ANSI-Sequenz, genau fuer diesen Fall
  585.        gedacht:
  586.                 `Esc[<n>"<x>'
  587.        wobei `<n>' die dezimal geschriebene Anzahl an Bytes in der Sequenz
  588.        `<x>' ist, die gerade die spezielle Drucker-Sequenz enthaelt. Diese
  589.        ANSI-Sequenz sagt dem Druckertreiber, dass er die naechsten `<n>'
  590.        Bytes nicht interpretieren oder uebersetzen soll.
  591.           Aber beide Methoden haben einen grossen Nachteil, wenn sie in
  592.   einem Anwendungsprogramm verwendet werden: Man verliert die
  593.   Druckerunabhaengigkeit! Solange man sich an die ANSI-Sequenzen haelt,
  594.   kann man jeden Drucker der Welt ansteuern, solange es einen
  595.   Amiga-Druckertreiber faer ihn gibt.  Wenn man anfaengt, druckereigene
  596.   Sequenzen zu verwenden, ist das Programm an diesen einen Druckertyp
  597.   gebunden und ist mit keinem anderen benutzbar (oder man muesste einige
  598.   Dutzend neue Druckertreiber fuer dieses Programm erstellen).
  599.   
  600.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.com
  601.   
  602.   3.7 Kann ich AmigaBasic auf dem A1200 verwenden?
  603.   ================================================
  604.   
  605.      Letztens ging eine Kontroverse ueber AmigaBasic durch die Netze: Ich
  606.   sagte, auf dem A1200 laeuft es einigermassen problemlos, jemand anders
  607.   berichtete, dass es bei jedem kleinsten Fehler sofort komplett
  608.   abstuerzt, was ich nicht nachvollziehen konnte.
  609.   
  610.      Jetzt kann ich es: Es liegt am Sound-Prefs-Editor. Wenn man in ihm
  611.   die Sound-Ausgabe ganz abschaltet, kann man mit AmigaBasic arbeiten.
  612.   Wenn hier ein Sound (z. B. Piepsen) angewaehlt ist, kollidiert das mit
  613.   dem Sound, den AmigaBasic offensichtlich zu Fuss und nicht ganz korrekt
  614.   selber erzeugen will, bumm.
  615.   
  616.      Abhilfe also:
  617.     1. Im Sound-Editor den Ton abstellen.
  618.   
  619.     2. Auf einem A4000 (oder einem A1200 mit Fast-RAM-Erweiterung (1))
  620.        muss man zusaetzlich NoFastMem aktivieren.
  621.   
  622.     3. Moeglichst SUBs vermeiden und stattdessen herkoemmliche GOSUBs
  623.        benutzen, dann ist die Kompatibilitaet zu neueren Prozessoren
  624.        hoeher.
  625.   
  626.      Dr. Peter Kittel, peterk@cbmger.de.so.commodore.co
  627.   
  628.      ---------- Footnotes ----------
  629.   
  630.      (1)  Nur bei einem zusaetzlichen Prozessor
  631.   
  632.   3.8 Wie lokalisiere ich mein Programm?
  633.   ======================================
  634.   
  635.      Nehmen wir an, wir wollen ein `HelloLocalWorld.c' schreiben. Das
  636.   letztendliche Programm sieht dann ungefaehr so aus:
  637.   
  638.            #include "HelloLocalWorld_Cat.h"
  639.            #include <clib/exec_protos.h>
  640.        
  641.            struct Library *LocaleBase;
  642.        
  643.            void main(int argc, char *argv[])
  644.        
  645.            {
  646.                /* Oeffne die locale.library. (Kein Abbruch, wenn sie nicht
  647.                   da ist, weil dann einfach die eingebauten Strings verwendet
  648.                   werden. Aus diesem Grund auch keine Verwendung des
  649.                   AutoOpening, auch wenn es der Compiler beherrscht.
  650.                */
  651.                LocaleBase = OpenLibrary("locale.library", 38);
  652.                OpenHelloLocalWorldCatalogs(NULL, NULL);
  653.        
  654.                printf(GetString(MSG_Hello));
  655.        
  656.                CloseHelloLocalWorldCatalog();
  657.                if (LocaleBase) CloseLibrary(LocaleBase);
  658.            }
  659.   
  660.      Die Funktion GetString prueft, ob die gewuenschten Kataloge
  661.   vorhanden sind und liefert einen Zeiger auf einen String, entweder den
  662.   eingebauten oder den Katalogstring. (In unserem Fall den deutschen
  663.   String.)
  664.   
  665.      Der Hauptunterschied zum gewohnten HelloWorld.c ist also (abgesehen
  666.   von der minimalen Initialisierung und dem Gegenstueck am Programmende),
  667.   Strings durch einen Funktionsaufruf zu ersetzen. Man braucht also eine
  668.   Datei `HelloLocalWorld_Cat.c', die die Funktionen OpenHelloLocalWorld,
  669.   GetString, CloseHelloLocalWorld_Cat.h und die eingebauten Strings
  670.   enthaelt (dies koennte ein Array sein, das unter anderem
  671.                array[MSG_Hello] = "Hello, local world.\n";
  672.   
  673.   enthaelt) und ein Includefile `HelloLocalWorld_Cat.h', das die ID's wie
  674.   MSG_Hello definiert. Es ist nicht noetig, zu wissen, wie diese Dateien
  675.   intern arbeiten, insbesondere benoetigt man auch keine Kenntnis der
  676.   `locale.library'!
  677.   
  678.      Dazu gibt es verschiedene Kataloggeneratoren (im Folgenden KG),
  679.   naemlich `CatComp' (nur fuer Developer), `KitCat', (nur deutsche
  680.   Dokumentation, was hierzulande kein Problem ist), `MakeCat', (das ich
  681.   nicht kenne) und `FlexCat' (das ich empfehle, einerseits, weil es sehr
  682.   flexibel im erzeugten Source ist und z.B. Lokalisierung unter 2.0 sowie
  683.   beliebige Programmiersprachen unterstuetzt, selbst Amiga-E, Cluster,
  684.   Pascal, ... und andererseits, weil es von mir ist ;-), die diese Dateien
  685.   sowie die Kataloge erzeugen. (Der obige Quelltext koennte je nach KG
  686.   leicht unterschiedlich aussehen.) Siehe Aminet, directory `dev/misc'.
  687.   
  688.      Wie funktionieren diese KGs? Zunaechst erzeugt man eine sogenannte
  689.   `Katalogbeschreibung' (`Catalog description'), die so aussehen koennte:
  690.            ; Mit einem Semikolon beginnende Zeilen sind Kommentare
  691.            # language english
  692.            ; die Sprache der eingebauten Strings
  693.            # version 0
  694.            ; die Katalogversion (0 = beliebig)
  695.            MSG_Hello (1/15/30)
  696.            Hello, local world
  697.   
  698.   Jeder String wird durch zwei Zeilen wie die letzten beiden definiert:
  699.   MSG_Hello ist die String-ID, (1/15/30) gibt den Wert der ID sowie die
  700.   minimale und maximale Laenge an. (Diese Argumente koennen auch
  701.   weggelassen werden, in welchem Fall einfach die naechste freie ID
  702.   verwendet wird.)
  703.   
  704.      Nun schreiben wir das Programm. Sobald es fertig ist, wird mit dem
  705.   KG eine sogenannte Kataloguebersetzung (eine fuer jede andere Sprache
  706.   als die eingebaute) erzeugt, die so aussehen koennte:
  707.            ; Mit einem Semikolon beginnende Zeilen sind Kommentare
  708.            ## language deutsch
  709.            ; the catalog language
  710.            ## version $VER: Deutsch.catalog 1.0 (22.12.93)
  711.            ; the catalog files version string
  712.            MSG_Hello
  713.        
  714.            ; Hello, local world
  715.   
  716.   Beachten Sie die leere Zeile nach der String-ID! (Die Argumente von ##
  717.   language und ## version waeren vielleicht leer.) Hier muessten jetzt
  718.   die deutschen Strings eingesetzt werden. Mit dem KG wird daraus dann
  719.   der eigentliche `Katalog' erzeugt. (Beachten Sie auch, dasss hier die
  720.   Angaben ueber String-ID und Stringlaenge fehlen: Sie werden aus der
  721.   Katalogbeschreibung uebernommen.
  722.   
  723.      Wenn das Programm veraendert wird (neue Strings, andere Laengen) und
  724.   die Katalogbeschreibung sich damit ebenfalls aendert, dann kann der KG
  725.   analog benutzt werden, um auch die Kataloguebersetzung und damit den
  726.   Katalog auf den neuesten Stand zu bringen.
  727.   
  728.   3.9 Wie erhaelt man einen Zeiger auf das Fenster einer Konsole?
  729.   ===============================================================
  730.   
  731.      Die folgende Funktion liefert den Window-Zeiger eines CON-Fensters.
  732.   Sie kann unter allen Versionen des Amiga-OS ausgefuehrt werden.
  733.   
  734.          struct Window *getConWindowPtr(BPTR fh)
  735.           {
  736.           struct Window *w;
  737.           struct FileHandle *cfh;
  738.           struct StandardPacket *sp;
  739.           struct InfoData *id;
  740.           struct MsgPort *mp;
  741.        
  742.           w = NULL;
  743.        
  744.           if((cfh = BADDR(fh))->fh_Type != NULL)
  745.            {
  746.            if(sp = AllocMem(sizeof(struct StandardPacket),
  747.                             MEMF_PUBLIC | MEMF_CLEAR))
  748.             {
  749.             if(id = AllocMem(sizeof(struct InfoData),
  750.                              MEMF_PUBLIC | MEMF_CLEAR))
  751.              {
  752.              if(mp = CreatePort(NULL, 0))
  753.               {
  754.               sp->sp_Msg.mn_Node.ln_Name = (char *)&sp->sp_Pkt;
  755.               sp->sp_Pkt.dp_Link         = &sp->sp_Msg;
  756.               sp->sp_Pkt.dp_Port         = mp;
  757.               sp->sp_Pkt.dp_Type         = ACTION_DISK_INFO;
  758.               sp->sp_Pkt.dp_Arg1         = MKBADDR(id);
  759.        
  760.               PutMsg(cfh->fh_Type, &sp->sp_Msg);
  761.               (void)WaitPort(mp);
  762.               (void)GetMsg(mp);
  763.        
  764.               if(sp->sp_Pkt.dp_Res1)
  765.                w = (struct Window *)id->id_VolumeNode;
  766.        
  767.               DeletePort(mp);
  768.               }
  769.              FreeMem(id, sizeof(struct InfoData));
  770.              }
  771.             FreeMem(sp, sizeof(struct StandardPacket));
  772.             }
  773.            }
  774.        
  775.           return w;
  776.           }
  777.   
  778.      Anmerkungen:
  779.      * Auf ein CON-Fenster direkt zuzugreifen kann Konflikte mit Aktionen
  780.        des CON-Handlers hervorrufen. Seien Sie vorsichtig!
  781.   
  782.      * Um den Window-Zeiger einer CLI-Konsole zu erhalten, uebergibt man
  783.        ein durch Open("*", MODE_OLDFILE) gewonnenes FileHandle an obige
  784.        Funktion.
  785.   
  786.      * Das Ergebnis der obigen Funktion kann sehr wohl NULL sein, etwa im
  787.        Falle eines AUX-Handlers oder falls ein AUTO-CON-Handler sein
  788.        Fenster nicht oeffnen kann.
  789.   
  790.      * Schickt man ein ACTION_DISK_INFO-Paket an einen AUTO-CON-Handler
  791.        (2.0+), so verliert dessen Fenster seine speziellen
  792.        AUTO-Eigenschaften (es kann also nicht mehr durch das Betaetigen
  793.        des Close-Gadgets geschlossen werden), weil der in id_VolumeNode
  794.        gelieferte Window-Zeiger gueltig bleiben muss.
  795.   
  796.      * Alles in allem: Verwenden Sie diese Funktion nicht. :-)
  797.   
  798.      Weitere Informationen finden Sie auf den Seiten 273, 276, 435, 463,
  799.   485 und 629 im "Amiga Guru Book" (siehe Dokumentation).
  800.   
  801.      Ralph Babel, rbabel@babylon.pfm-mainz.de
  802.   
  803.   3.10 Was sind Pragmas?
  804.   ======================
  805.   
  806.      Pragmas sind spezielle Anweisungen an den Praeprozessor eines
  807.   C-Compilers.  Zwei Probleme entstehen bei der Verwendung von Pragmas:
  808.     1. Pragmas sind hochgradig compilerspezifisch. Nicht einmal die
  809.        Amiga-Compiler haben dieselben Pragmas, selbst wenn damit das
  810.        gleiche bewirkt wird.
  811.   
  812.     2. Man kann sich nicht darauf verlassen, dass ein Compiler Pragmas
  813.        ignoriert, die er nicht fuer steht. Dies gilt selbst dann, wenn
  814.        man einen Ausdruck wie den folgenden verwendet:
  815.                 #ifndef MY_COMPILER
  816.                 #pragma DoAnything
  817.                 #endif
  818.   
  819.   Das letztere Problem laesst sich umgehen, indem man Pragmas wie folgt
  820.   in eigene Include-Files setzt. (Das gleiche gilt uebrigens auch fuer
  821.   andere Praeprozessor-Kommandos wie #asm (Aztec-C) oder #extern (C++).)
  822.            #ifndef MY_COMPUTER
  823.            #include <mypragmas.h>
  824.            #endif
  825.   
  826.      Aber was machen Pragmas auf dem Amiga? Meistens werden sie verwendet,
  827.   um dem Compiler mitzuteilen, wie gewisse Library-Funktionen aufgerufen
  828.   werden. (Tatsaechlich wird fast immer diese Verwendung gemeint, wenn
  829.   Amiga-Besitzer ueber Pragmas sprechen.) Gewoehnliche C-Funktionen
  830.   erwarten ihre Argumente auf dem Stack, Library-Funktionen dagegen in
  831.   bestimmten Registern. Ferner erwarten sie den `Library-Base-Pointer' in
  832.   Register a6.  Betrachten wir eine Pragma-Anweisung von Aztec-C:
  833.            #pragma amicall(SysBase,0xd2,FreeMem(a1,d0))
  834.   
  835.   Dies weist den Compiler an, das erste Argument in Register a1 und das
  836.   zweite in d0 zu laden. Ferner wird der Inhalt der Variablen SysBase in
  837.   Register a6 geladen. Maxon-Pragmas sehen genauso aus, Dice- und
  838.   SAS-Pragmas sind allerdings etwas komplizierter:
  839.            #pragma libcall SysBase FreeMem d2 0902
  840.   
  841.   Hier ist d2 (wie 0xd2 oben) der `Library-Vektor-Offset' (siehe
  842.   naechstes Beispiel). Die letzte Ziffer ist die Zahl der Argumente, die
  843.   davorstehende 0 ein Code fuer das Register mit dem Ergebnis und die
  844.   davor stehenden Ziffern sind Codes fuer die Register mit den Argumenten
  845.   in verkehrter Reihenfolge. (Die Codes bedeuten 0=d0, 1=d1, .., 8=a0,
  846.   9=a1, a=a2, ..)
  847.   
  848.      Ein Kommando wie `FreeMem(fib,sizeof(*fib);' wuerde ein Compiler nun
  849.   in folgenden Code uebersetzen:
  850.            move.l  _fib,a1
  851.            move.l  260,d1        ; sizeof(struct FileInfoBlock)
  852.            move.l  _SysBase,a6
  853.            jsr     -0xd2(a6)       ; 0xd2 = _LVOFreeMem
  854.   
  855.   FreeMem in dieser Art aufzurufen ist kuerzer und schneller als
  856.   zunaechst die Argumente auf den Stack zu legen und dann eine Funktion
  857.   _FreeMem aufzurufen, die letzten Endes doch nur dasselbe tun und die
  858.   Argumente vom Stack in dieselben Register laden wuerde.
  859.   
  860.      Das Portierungsproblem der Pragmas umgeht man, indem man sie
  861.   folgendermassen in den eigenen Quelltext einbindet:
  862.            /*    Lade den Funktionsprototyp. Dieser ist nicht vom    */
  863.            /*    verwendeten Compiler abhaengig.                */
  864.            #include <clib/exec_protos.h>
  865.        
  866.            /*    Pragmas sind vom Compiler abhaengig, aber wenigstens    */
  867.            /*    die Namen der Dateien mit Pragmas sind relativ        */
  868.            /*    einheitlich.                        */
  869.            #ifdef AZTEC_C
  870.            #include <pragmas/exec_lib.h>
  871.            #endif
  872.            #if defined(__SASC) || defined(_DCC) || defined(__MAXON__)
  873.            #include <pragmas/exec_pragmas.h>
  874.            #endif
  875.            #ifdef __GNUC__
  876.            #include <inline/exec_lib.h>
  877.            #endif
  878.   
  879.   Das obige Beispiel kann problemlos mit allen angegebenen Compilern
  880.   verwendet werden und produziert optimalen Code.
  881.   
  882.      Eine abschliessende Frage bleibt allerdings: Wie bekommt man die
  883.   Pragmas?  Die meisten Compiler haben bereits fertige Pragmas im
  884.   Lieferumfang.  Allerdings hilft das nicht, wenn man z.B. eine neue
  885.   Library benutzen moechte oder nur die Pragmas einer veralteten Version
  886.   hat. In diesem Fall kann man die Pragmas selbst aus den sogenannten
  887.   `FD'-Files erzeugen.  Dazu haben die meisten Compiler ein Utility
  888.   namens `fd2pragma'.  (Das NDU hat z.B. ein Directory namens FD, in dem
  889.   die FD-Files aller Libraries und Devices des OS enthalten sind. siehe
  890.   Include-Dateien) Es gibt auch ein frei kopierbares fd2pragma, das
  891.   Pragmas fuer Aztec, Dice, SAS und Maxon sowie LVO-Files fuer den
  892.   Aztec-Assembler und eventuelle Tag-Versionen produziert. (Aminet,
  893.   `dev/misc/fd2pragma2_0.lha' oder auf den Fish-CD's)
  894.   
  895.   3.11 Wo finde ich die Funktion xxx?
  896.   ===================================
  897.   
  898.      Zunaechst sollte man sich versichern, dass die Funktion tatsaechlich
  899.   fehlt: Z.B. Floating-Point-Funktionen befinden sich in einer speziellen
  900.   Link-Library, die erst mit der Option `-lm' eingebunden wird.  Ferner
  901.   kann es eine fehlende Variable sein: Wenn man z.B. ohne es zu bemerken
  902.   eine Intuition-Funktion benutzt, dann wird der Linker ueber das Fehlen
  903.   eines Symbols `IntuitionBase' klagen. In diesem Fall muss man also
  904.   lediglich das Folgende irgendwo im globalen Teil seines Quelltextes
  905.   einbauen:
  906.            struct Library *IntuitionBase;
  907.   
  908.   (Und vergessen Sie nicht, die Library mit OpenLibrary() zu eroeffnen und
  909.   mit CloseLibrary() zu schliessen! :-)
  910.   
  911.      Allerdings koennte die Funktion natuerlich tatsaechlich fehlen. Wenn
  912.   man zum Beispiel nur die Version 2.0 der amiga.lib hat, dann fehlen
  913.   etwa die Locale-Funktionen oder die Memory-Pool-Funktionen obwohl sie
  914.   prinzipiell verwendbar sind. (1) Die einfachste (und beste) Loesung
  915.   ist, das sogenannte NDU zu kaufen.  Siehe Include-Dateien. Wer nicht
  916.   solange warten moechte, fuer den ist die Frage, welche Art von Funktion
  917.   in seiner Link-Library fehlt:
  918.      * Einfache Amiga-Library-Funktionen (z.B. `exec/AllocPooled' oder
  919.        `locale/OpenCatalogA') kann man mit Pragmas aufrufen und braucht
  920.        dann lediglich Informationen ueber die Aufrufkonventionen
  921.        (Library-Base, Library-Vektor-Offset und Argumentregister)
  922.   
  923.      * Tag-Funktionen sind meistens einfach Zwischenfunktionen, die ihre
  924.        Argumente auf dem Stack erwarten und dann die eigentliche
  925.        Library-Funktion aufrufen. Wenn man z.B. die Funktion
  926.        `dos/AllocDosObject', die eine Konstante und einen Zeiger auf ein
  927.        Array als Argumente erwartet, nach der obigen Methode konstruiert
  928.        hat, dann hat man damit auch ihre Stack-Variante! Dazu erzeugt man
  929.        aifach die folgende Funktion:
  930.                 #include <clib/dos_protos.h>
  931.                 #include <pragmas/dos_pragmas.h>    /*  Evtl. anderer Name    */
  932.             
  933.                 void *AllocDosObjectTags(ULONG objtype, Tag tag1, ...)
  934.                 { return(AllocDosObject(objtype, (struct TagItem *) &tag1);
  935.                 }
  936.   
  937.        Mit fd2pragma kann das auch automatisch geschehen. Siehe Pragmas.
  938.   
  939.      * Einige Funktionen bleiben aber noch uebrig: Amiga.lib enthaelt
  940.        naemlich auch Funktionen, die fuer sich selbst interessant sind,
  941.        z.B. die BOOPSI-Funktionen (`DoMethod', `DoSuperMethod'), die
  942.        Memory-Pool-Funktionen (`LibAllocPooled', `LibCreatePool', die
  943.        Ersatz fuer entsprechende 3.0-Funktionen sind) oder `HookEntry',
  944.        das sehr hilfreich bei der Programmierung von Hooks ist. Diese
  945.        kann man nur durch entsprechende, disassemblierte und neu
  946.        assemblierte oder compilierter Versionen ersetzen. Im
  947.        AmigaFAQ-Archiv sind einige dieser Funktionen bereits enthalten.
  948.   
  949.      ---------- Footnotes ----------
  950.   
  951.      (1)  Dieses Problem  betrifft vor allem Besitzer von Aztec-C, das
  952.   seither nicht weiter unterstuetzt wird und von Dice, der manchmal etwas
  953.   unvollstaendig ist. Ich besitze beide ..
  954.   
  955.   4 Anwendungen
  956.   *************
  957.   
  958.      Dieses Kapitel entaehlt Informationen zu verschiedenen
  959.   Anwendungsbereichen.
  960.   
  961.   4.1 Text-Editoren
  962.   =================
  963.   
  964.      Editoren sind Programme, die die Eingabe von unformatiertem Text
  965.   ermoeglichen.  Dies ist meist Text, der anschliessend durch den
  966.   Computer verarbeitet wird.  Programmierer benutzen etwa Editoren zur
  967.   Eingabe der Quelltexte. Unter Unix beginnt Textverarbeitung meist mit
  968.   einem Editor, dessen Ausgabe dann mit einer Textbearbeitungssprache
  969.   (z.B. TeX) in gutaussehende Dokumente umgewandelt wird, da unter Unix
  970.   Textverarbeitungsprogramme kaum verbreitet sind.
  971.   
  972.   *Kommerzielle Produkte*
  973.        CygnusEd Professional und TurboText scheinen hier die Nase vorn zu
  974.        haben.  Auf den Fish-Disks gibt es Dutzende von
  975.        Shareware-Editoren. Eine Demoversion von TurboText ist auf
  976.        Fish-Disk 445 und eine allerdings sehr alte von CygnusEd auf
  977.        Fish-Disk 95. Die Folgenden Editoren sind frei kopierbar.
  978.   
  979.   *Emacs*
  980.        Gnu Emacs (Aminet, Directory `util/gnu') kommt von Unix und ist
  981.        moeglicherweise der Koenig der Editoren. Er ist riesig (ueber
  982.        1MB), enthaelt eine unglaubliche Vielfalt von Funktionen (z.B. ein
  983.        eigenes Fenstersystem und sogar ein Spiel :-) und beliebig
  984.        erweiterbar: Emacs enthaelt einen eigenen Lisp-Interpreter!
  985.        Andererseits ist er dadurch schwer erlernbar und so beliebig
  986.        konfigurierbar, dass man mit dem Emacs eines anderen oft nicht
  987.        mehr umgehen kann...
  988.   
  989.   *Vi*
  990.        Einfacher, aber weniger konfigurierbar und nicht erweiterbar ist
  991.        Vi.  Er ist vor allem bei Unix-Benutzern beliebt, weil es ihn auf
  992.        *jeder* Unix-Maschine gibt. Die Wahl zwischen beiden ist eine
  993.        Sache der persoenlichen Vorliebe, kann einen allerdings fuers
  994.        Leben kennzeichnen. Vim und Stevie (Fish-Disk 591 bzw. 256 und
  995.        Aminet, Directory `util/edit') sind Vi-Versionen fuer den Amiga.
  996.   
  997.   *DME*
  998.        Viele Amiga-Programmierer moegen DME. Er ist schnell und voll
  999.        konfigurierbar: Menues und Tastenbelegung sind beliebig. Er ist
  1000.        auch leichter erlernbar als Emacs und Vi. Es gibt drei
  1001.        verschiedene Versionen: AmokEd, DME und XDME.  Die Wahl ist
  1002.        Geschmacksache. (Oberon- und Modula-Programmierer bevorzugen
  1003.        haeufig den AmokEd, weil der in Oberon geschrieben ist und die
  1004.        Fehlermeldungen von AmiOberon direkt anzeigen kann.
  1005.        C-Programmierer dagegen stehen oefter auf letzterem.) Quellen:
  1006.        Aminet, Directory `util/edit', Fish-Disk 776 (XDME) und 749
  1007.        (AmokEd), AMOK 90.
  1008.   
  1009.   4.2 Was fuer Textverarbeitungsprogramme gibt es?
  1010.   ================================================
  1011.   
  1012.      Textverarbeitungsprogramme benoetigt man, um Briefe, Artikel oder
  1013.   aehnliches zu schreiben. Dies ist natuerlich eine der wichtigsten
  1014.   Anwendungen eines Computers und eine fuer Sie geeignete Wahl bestimmt
  1015.   haeufig, wie gut Sie mit Ihrem Computer ueberhaupt zurechtkommen.
  1016.   Textverarbeitungsprogramme besitzen teilweise Faehigkeiten, die sie
  1017.   sogar fuer DTP (siehe DTP) geeignet machen.  Fuer einfacher
  1018.   strukturierte Texte, etwa Quelltexte benuetzt man allerdings meist
  1019.   besser einen Editor. Siehe Editoren.
  1020.   
  1021.      Man unterscheidet Wysiwyg-Programme (What you see is what you get)
  1022.   und Seitenbearbeitungssprachen. Wysiwyg-Programme sollten schnell,
  1023.   komfortabel und einfach erlernbar sein. Die meisten Anwender ziehen sie
  1024.   vor. Die Alternative ist ein funktioniert aehnlich wie Compiler: Man
  1025.   verarbeitet Text-Dateien mit einem Programm, das das Layout uebernimmt
  1026.   und eine weitere Datei erzeugt, die dann mit auf dem Bildschirm
  1027.   angezeigt oder auf einem Drucker ausgegeben werden kann. LaTeX ist
  1028.   eines dieser Programme. Siehe TeX.  Lout ist ein weiteres solches
  1029.   Programm, schneller und einfacher als LaTeX und mit vollstaendiger
  1030.   Dokumentation versehen, aber natuerlich wesentlich weniger verbreitet.
  1031.   Lout erzeugt PostScript-Dateien. (Ob dies ein Vor- oder Nachteil ist,
  1032.   muss jeder selbst beurteilen. ;-) Siehe PostScript. Beide Programme
  1033.   sind frei kopierbar.
  1034.   
  1035.      Wysiwyg-Programme gibt es viele, allerdings alle kommerziell: Final
  1036.   Copy II, Wordworth, Word Perfect, AmiWrite, Beckertext II, Maxon Word
  1037.   und viele andere. Zur Wahl kann ich nur eines sagen: Lassen Sie sich
  1038.   viel Zeit bei der Auswahl.
  1039.   
  1040.   4.3 Desktop Publishing
  1041.   ======================
  1042.   
  1043.      Diese Staerke dieser Programme ist die beliebige Anordnung und
  1044.   Gestaltung von Text- oder Grafikelementen. Bei Textverarbeitungen sind
  1045.   diese Faehigkeiten meist unterentwickelt. Umgekehrt fehlen
  1046.   DTP-Programmen haeufig wichtige Funktionen zur Manipulation des Textes
  1047.   selbst. Allerdings kommen die besten Textverarbeitungen sicher nahe an
  1048.   den DTP Bereich (etwa Microsoft Word auf dem Mac oder PC) und umgekehrt
  1049.   ist Framemaker (UNIX, Mac, DOS) ein Beispiel eines DTP-Programms, das
  1050.   die wichtigsten Textverarbeitungsfunktionen enthaelt.  Auf dem Amiga
  1051.   gibt es leider weder in der einen noch in der anderen Richtung
  1052.   hervorragende Beispiele, wenn auch die wichtigsten Textverarbeitungen
  1053.   schon einiges leisten. Wenn man nicht gerade regelmaessig kleinere
  1054.   Zeitungen herausbringt, dann wird in den meisten Faellen ein
  1055.   Textverarbeitungsprogramm genuegen. Und wer umgekehrt komplexere
  1056.   Funktionen wie mathematische Formeln, umfangreiche Indexe und
  1057.   Referenztabellen benoetigt, der wird womoeglich auf eine
  1058.   Seitenbearbeitungssprache angewiesen sein. Siehe Textverarbeitungen.
  1059.   
  1060.      Es gibt derzeit nur kommerzielle DTP-Systeme, vor allem ProPage und
  1061.   PageStream, die in den letzten Jahren wohl gegenseitig Hase und Igel
  1062.   miteinander gespielt haben. Derzeit scheint PageStream 3.0 vorne zu
  1063.   liegen.  Beide Programme liegen im Preis um 300$, in den USA gibt es
  1064.   wohl auch Studentenermaessigung (um 40%). Eine ausfuehrlichere
  1065.   Beschreibung waere willkommen.
  1066.   
  1067.   4.4 Was ist TeX und wo bekomme ich es?
  1068.   ======================================
  1069.   
  1070.      TeX ist eines der maechtigsten Textverarbeitungssysteme, die es gibt.
  1071.   Es kann praktisch beliebige mathematische Formeln ebenso darstellen wie
  1072.   komplexe Tabellen, Funktionen plotten (mit Hilfsprogrammen), Indexe oder
  1073.   Inhaltsverzeichnisse erzeugen und viele andere Dinge. Sein groesster
  1074.   Vorteil ist, dass es frei kopierbar ist (TeX selbst, nicht unbedingt die
  1075.   Drucker- und Bildschirmtreiber) und sich dadurch auf der ganzen Welt und
  1076.   auf praktisch jeder Computerfamilie verbreitet hat. Sein groesster
  1077.   Nachteil ist, dass es sehr unhandlich und schwer zu erlernen ist (Es
  1078.   arbeitet aehnlich wie ein Compiler.) und keinerlei Wysiwyg-Faehigkeiten
  1079.   hat.  Aber viele Leute moegen es. (Dieser Text ist uebrigens mit TeX
  1080.   erstellt worden. 8-) Siehe Textverarbeitungen.
  1081.   
  1082.      Es gibt im wesentlichen zwei Implementationen auf dem Amiga.
  1083.   Amiga-TeX von Thomas Rockicki und Radical Eye Software ist kommerziell
  1084.   und kostet etwa 200-300$. Es soll wirklich exzzellent sein und seine
  1085.   Besitzer schwoeren darauf.
  1086.   
  1087.      Ich persoenlich empfehle PasTeX, eine frei kopierbare Version. Es
  1088.   gibt immer wieder Leute, die ueber Installationsprobleme klagen
  1089.   (besonders, was das Laden und die automatische Erzeugung von Fonts
  1090.   angeht), aber ich kenne niemanden, der unzufrieden ist, nachdem es erst
  1091.   einmal installiert ist.  (Ein Freund mit TeX-Kenntnissen kann enorm
  1092.   hilfreich sein.) Wenn man sich an die Vorgaben des Installationsskripts
  1093.   haelt, sollte es eigentlich keine Probleme geben. Wesentlich ist
  1094.   allerdings, dass man alles noetige installiert und dazu braucht man:
  1095.      * 5 Disketten mit dem eigentlichen TeX-Compiler
  1096.   
  1097.      * 2 Disketten mit MetaFont
  1098.   
  1099.      * Nichts weiter Viele Leute fragen nach Fonts. Diese sind Teil des
  1100.   MetaFont-Paketes und werden automatisch erzeugt, wenn sie gebraucht
  1101.   werden, vorausgesetzt natuerlich, dass TeX so wie in der Dokumentation
  1102.   beschrieben installiert ist. (Das Erzeugen der Fonts kann am Anfang
  1103.   natuerlich dauern bis die wichtigsten erst mal da sind.) Bitte beachten
  1104.   Sie, dass die PasTeX-Disketten mit Zoom gepackt sind. (siehe Endungen)
  1105.   PasTeX bekommt man per FTP z.B. bei `ftp.uni-passau.de' im Directory
  1106.   `/pub/amiga/tex/PasTeX1.3'.
  1107.   
  1108.   4.5 Gibt es PostScript-Interpreter auf dem Amiga?
  1109.   =================================================
  1110.   
  1111.      PostScript ist eine Programmiersprache fuer das Ausdrucken von
  1112.   ganzen Seiten.  Apple hat PostScript populaer gemacht, indem sie es in
  1113.   ihre Drucker eingebaut haben.Inzwischen gibt es viele Programme, die
  1114.   ihre Ausdrucke als PostScript-Quelltexte machen koennen. Bis vor kurzem
  1115.   brauchte man fuer PostScript einen relativ teuren Laserdrucker.
  1116.   Inzwischen gibt es aber auch Programme, die PostScript-Dateien auf
  1117.   anderen Druckern ausgeben koennen.
  1118.   
  1119.      Einer der Vorteile von PostScript ist, dass es unabhaengig von der
  1120.   gewaehlten Aufloesung ist. Man kann also die Vorteile der moeglichen
  1121.   Aufloesung auf dem Drucker ausnutzen und trotzdem dieselbe Datei auf
  1122.   dem Bildschirm mit seiner meist schlechteren Aufloesung darstellen.
  1123.   
  1124.      Es gibt zwei frei kopierbare PostScript-Interpreter, Post und
  1125.   GhostScript.  Post ist eine shared-Library mit Programmen zur Ausgabe
  1126.   auf Drucker und Bildschirm. Man kann damit beispielsweise in AmigaTeX
  1127.   PostScript-Dateien als Bilder in TeX-Dateien einbauen. Siehe TeX.
  1128.   GhostScript besteht ebenfalls aus zwei Programmen, GhostScript selbst
  1129.   (der eigentliche Interpreter) und GhostView, der Benutzeroberflaeche.
  1130.   Quellen: Aminet (Directories `text/print' und `text/dtp'), Fish Disk
  1131.   669.
  1132.   
  1133. -- 
  1134. Jochen Wiedmann            E-Mail: wiedmann@mailserv.zdv.uni-tuebingen.de
  1135.